package smallfrench.ui;

import java.awt.Desktop;
import java.awt.Window;
import java.net.URI;

import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

@SuppressWarnings("serial")
public class APropos extends JDialog {

	private static final String licence =
			"http://www.gnu.org/licenses/gpl-3.0.fr.html";
	private static final String pageProjet =
			"https://code.google.com/p/smallfrench/";

	private static final String texte = "<html>" +
			"<body style=\"font-size:11px; font-family:sans-serif;\">" +

			"<center>" +

			"<br><b>smallFrench</b> est un langage de programmation libre " +
			"destiné à l’apprentissage de l’algorithmique et du " +
			"développement informatique." +
			"<br><br>" +

			"Cet interpreteur est multi-plateforme et entièrement écrit en " +
			"Java.<br><br>" +

			htmlLien(pageProjet, pageProjet) +

			"</center>" +

			"<br><br><br><hr><br><br>" +

			"Ce programme est fourni sans AUCUNE GARANTIE ; c’est un " +
			"logiciel libre, et vous pouvez le redistribuer sous certaines " +
			"conditions.<br>" +

			"Pour plus de détails, visitez " + htmlLien(licence, licence) +
			"." +

			"</body></html>";

	//---------------------------------------------------------------------

	public APropos(Window parent) {
		super(parent);
		setSize(600, 400);
		setResizable(false);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setTitle("À propos de smallFrench");

		JEditorPane label;
		label = new JEditorPane("text/html", texte);

		label.addHyperlinkListener(new HyperlinkListener() {

			private HyperlinkEvent.EventType acti =
					HyperlinkEvent.EventType.ACTIVATED;

			@Override
			public void hyperlinkUpdate(HyperlinkEvent e) {

				if (e.getEventType() == acti
						&& Desktop.isDesktopSupported()) {

					try {
						URI uri = e.getURL().toURI();
						Desktop.getDesktop().browse(uri);
					} catch (Throwable t) {
						t.printStackTrace();
					}
				}
			}
		});


		label.setEditable(false);
		add(label);
	}

	//---------------------------------------------------------------------

	private static String htmlLien(String url, String contenu) {
		return "<a href=\"" +url + "\">" + contenu + "</a>";
	}

}
